'''in the info.py,there are some infromation:
_MAJOR_CURRENCIES_:list,contain the major currency pairs in oanda
_EXOTOC_CURRENCIES_:list,contain the exotoc currency pairs in oanda
_ALL_CURRENCIES_:list,contain all the currency pairs in oanda
_COMMIDITY_:list,contain some metals assert in oanda
_CFD_:list,contain some commidity future and some index future in oanda
_INSTRUMENTS_:  dict of dict,the key is the insturment or asset name,
                the value is a dict that contain,
                'displayName':the name display on the screen,
                'displayPrecision':int,the number places after dot,
                'pipLocation':int,the pip_point,the tick size,
                'marginRate':str,
                'minimumTradeSize': str,the min number to tade in an order,
                'maximumOrderUnits':str,the max number to trade in an order,
                'maximumPositionSize':str,the max position size,
                'maximumTrailingStopDistance':str,the max TrailingStop order number,
                'minimumTrailingStopDistance':str,the min TrailingStop order number,
                'tradeUnitsPrecision': str,
                'spread':float,
                'type':str,currency,CFD,ans so on;
_MARGIN_RATE_:  dict,the key is the asset name,the value is a str,eg:'3.0%'
_PIP_POINT_:    dict,the key is the asset name,the value is the number places
                after the dot
_SPREAD_:       dict,the key is the asset name,the value is a float numer
'''


_MAJOR_CURRENCIES_ = [
        'AUD_JPY',
        'AUD_USD',
        'EUR_AUD',
        'EUR_CHF',
        'EUR_GBP',
        'EUR_JPY',
        'EUR_USD',
        'GBP_CHF',
        'GBP_JPY',
        'GBP_USD',
        'NZD_USD',
        'USD_CHF',
        'USD_CAD',
        'USD_JPY'
        ]
_EXOTOC_CURRENCIES_ = [
        'AUD_CAD',
        'AUD_CHF',
        'AUD_HKD',
        'AUD_NZD',
        'AUD_SGD',
        'CAD_CHF',
        'CAD_HKD',
        'CAD_JPY',
        'CAD_SGD',
        'CHF_HKD',
        'CHF_JPY',
        'CHF_ZAR',
        'EUR_CAD',
        'EUR_CZK',
        'EUR_DKK',
        'EUR_HKD',
        'EUR_HUF',
        'EUR_NOK',
        'EUR_NZD',
        'EUR_PLN',
        'EUR_SEK',
        'EUR_SGD',
        'EUR_TRY',
        'EUR_ZAR',
        'GBP_AUD',
        'GBP_CAD',
        'GBP_HKD',
        'GBP_NZD',
        'GBP_PLN',
        'GBP_SGD',
        'GBP_ZAR',
        'HKD_JPY',
        'NZD_CAD',
        'NZD_CHF',
        'NZD_HKD',
        'NZD_JPY',
        'NZD_SGD',
        'SGD_CHF',
        'SGD_HKD',
        'SGD_JPY',
        'TRY_JPY',
        'USD_CNH',
        'USD_CZK',
        'USD_DKK',
        'USD_HKD',
        'USD_HUF',
        'USD_INR',
        'USD_MXN',
        'USD_NOK',
        'USD_PLN',
        'USD_SAR',
        'USD_SEK',
        'USD_SGD',
        'USD_THB',
        'USD_TRY',
        'USD_ZAR',
        'ZAR_JPY'
        ]
_COMMIDITY_ = [
        'XAU_USD',
        'XAU_AUD',
        'XAU_CAD',
        'XAU_CHF',
        'XAU_EUR',
        'XAU_GBP',
        'XAU_HKD',
        'XAU_JPY',
        'XAU_NZD',
        'XAU_SGD',
        'XAU_XAG',
        'XPD_USD',
        'XPT_USD',
        'XAG_USD',
        'XAG_AUD',
        'XAG_CAD',
        'XAG_CHF',
        'XAG_EUR',
        'XAG_GBP',
        'XAG_HKD',
        'XAG_JPY',
        'XAG_NZD',
        'XAG_SGD'
        ]
_CFD_ = [
        'AU200_AUD',
        'BCO_USD',
        'DE10YB_EUR',
        'CN50_USD',
        'XCU_USD',
        'CORN_USD',
        'EU50_EUR',
        'FR40_EUR',
        'DE30_EUR',
        'HK33_HKD',
        'IN50_USD',
        'JP225_USD',
        'NATGAS_USD',
        'NL25_EUR',
        'SG30_SGD',
        'SOYBN_USD',
        'SUGAR_USD',
        'TWIX_USD',
        'UK100_GBP',
        'UK10YB_GBP',
        'USB10Y_USD',
        'USB02Y_USD',
        'USB05Y_USD',
        'NAS100_USD',
        'US2000_USD',
        'SPX500_USD',
        'USB30Y_USD',
        'US30_USD',
        'WTICO_USD',
        'WHEAT_USD'
        ]

_ALL_CURRENCIES_ = _MAJOR_CURRENCIES_ + _EXOTOC_CURRENCIES_

_INSTRUMENTS_ = {'AU200_AUD':   {'displayName': 'Australia 200',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '1250',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 2.7524891778,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'AUD_CAD':      {'displayName': 'AUD\\/CAD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0002575894,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'AUD_CHF':      {'displayName': 'AUD\\/CHF',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0003174925,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'AUD_HKD':      {'displayName': 'AUD\\/HKD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0015324296,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'AUD_JPY':      {'displayName': 'AUD\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0192642652,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'AUD_NZD':      {'displayName': 'AUD\\/NZD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0003626826,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                 'AUD_SGD':     {'displayName': 'AUD\\/SGD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0004062931,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'AUD_USD':      {'displayName': 'AUD\\/USD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0001508528,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'BCO_USD':      {'displayName': 'Brent Crude Oil',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0404240014,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'CAD_CHF':      {'displayName': 'CAD\\/CHF',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0002931846,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'CAD_HKD':      {'displayName': 'CAD\\/HKD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0013170465,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'CAD_JPY':      {'displayName': 'CAD\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0226040984,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'CAD_SGD':      {'displayName': 'CAD\\/SGD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0003729379,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'CHF_HKD':      {'displayName': 'CHF\\/HKD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.002251835,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'CHF_JPY':      {'displayName': 'CHF\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0316249611,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'CHF_ZAR':      {'displayName': 'CHF\\/ZAR',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0152785017,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'CN50_USD':     {'displayName': 'China A50',
                                'displayPrecision': 1,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '500',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 13.3246337838,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'CORN_USD':     {'displayName': 'Corn',
                                'displayPrecision': 3,
                                'marginRate': '0.033333',
                                'maximumOrderUnits': '1500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0103383186,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'DE10YB_EUR':   {'displayName': 'Bund',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '150000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.01565451,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'DE30_EUR':     {'displayName': 'Germany 30',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '1000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 2.2872269912,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'EU50_EUR':     {'displayName': 'Europe 50',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '3000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 1.5623899593,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'EUR_AUD':      {'displayName': 'EUR\\/AUD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.000314992,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_CAD':      {'displayName': 'EUR\\/CAD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0002853644,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_CHF':      {'displayName': 'EUR\\/CHF',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0002534711,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_CZK':      {'displayName': 'EUR\\/CZK',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0187555924,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_DKK':      {'displayName': 'EUR\\/DKK',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0014228758,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_GBP':      {'displayName': 'EUR\\/GBP',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0001822658,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_HKD':      {'displayName': 'EUR\\/HKD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0016659534,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_HUF':      {'displayName': 'EUR\\/HUF',
                                'displayPrecision': 3,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.2934920256,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_JPY':      {'displayName': 'EUR\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0205513434,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_NOK':      {'displayName': 'EUR\\/NOK',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0045037041,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_NZD':      {'displayName': 'EUR\\/NZD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0004329759,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_PLN':      {'displayName': 'EUR\\/PLN',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0034911581,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_SEK':      {'displayName': 'EUR\\/SEK',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0045799992,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_SGD':      {'displayName': 'EUR\\/SGD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0005123163,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_TRY':      {'displayName': 'EUR\\/TRY',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '10000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0060372784,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_USD':      {'displayName': 'EUR\\/USD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0001423045,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'EUR_ZAR':      {'displayName': 'EUR\\/ZAR',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0164639837,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'FR40_EUR':     {'displayName': 'France 40',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '1000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 1.3249353126,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'GBP_AUD':      {'displayName': 'GBP\\/AUD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0004229202,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'GBP_CAD':      {'displayName': 'GBP\\/CAD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0004191404,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'GBP_CHF':      {'displayName': 'GBP\\/CHF',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0003752127,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'GBP_HKD':      {'displayName': 'GBP\\/HKD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0022950508,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'GBP_JPY':      {'displayName': 'GBP\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0301834551,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'GBP_NZD':      {'displayName': 'GBP\\/NZD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0005916066,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'GBP_PLN':      {'displayName': 'GBP\\/PLN',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0049918715,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'GBP_SGD':      {'displayName': 'GBP\\/SGD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0006506036,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'GBP_USD':      {'displayName': 'GBP\\/USD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0002126502,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'GBP_ZAR':      {'displayName': 'GBP\\/ZAR',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0194115996,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'HK33_HKD':     {'displayName': 'Hong Kong 33',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '2000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 6.6964529486,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'HKD_JPY':      {'displayName': 'HKD\\/JPY',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0026626497,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'IN50_USD':     {'displayName': 'India 50',
                                'displayPrecision': 1,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '300',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 7.9312693406,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'JP225_USD':    {'displayName': 'Japan 225',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '750',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 11.6373561543,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'NAS100_USD':   {'displayName': 'US Nas 100',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '2000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 1.7625025295,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'NATGAS_USD':   {'displayName': 'Natural Gas',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '1000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0073083773,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'NL25_EUR':     {'displayName': 'Netherlands 25',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '12000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.2219368224,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'NZD_CAD':      {'displayName': 'NZD\\/CAD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0003158893,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'NZD_CHF':      {'displayName': 'NZD\\/CHF',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0003421452,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'NZD_HKD':      {'displayName': 'NZD\\/HKD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0017966945,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'NZD_JPY':      {'displayName': 'NZD\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0245073962,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'NZD_SGD':      {'displayName': 'NZD\\/SGD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0004412654,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'NZD_USD':      {'displayName': 'NZD\\/USD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0001874764,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'SG30_SGD':     {'displayName': 'Singapore 30',
                                'displayPrecision': 2,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '2000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1000.00',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.50',
                                'pipLocation': -1,
                                'spread': 0.2612041581,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'SGD_CHF':      {'displayName': 'SGD\\/CHF',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0003151288,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'SGD_HKD':      {'displayName': 'SGD\\/HKD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0015246196,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'SGD_JPY':      {'displayName': 'SGD\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0278132824,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'SOYBN_USD':    {'displayName': 'Soybeans',
                                'displayPrecision': 3,
                                'marginRate': '0.033333',
                                'maximumOrderUnits': '600000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0175055624,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'SPX500_USD':   {'displayName': 'US SPX 500',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '10000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 0.506929674,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'SUGAR_USD':    {'displayName': 'Sugar',
                                'displayPrecision': 5,
                                'marginRate': '0.033333',
                                'maximumOrderUnits': '20000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0002591485,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'TRY_JPY':      {'displayName': 'TRY\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0345223116,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'TWIX_USD':     {'displayName': 'Taiwan Index',
                                'displayPrecision': 1,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '10000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 0.522808276,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'UK100_GBP':    {'displayName': 'UK 100',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '500',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 2.1574976099,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'UK10YB_GBP':   {'displayName': 'UK 10Y Gilt',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0403767167,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'US2000_USD':   {'displayName': 'US Russ 2000',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '5000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.6095425983,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'US30_USD':     {'displayName': 'US Wall St 30',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '1000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 3.2595113172,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'USB02Y_USD':   {'displayName': 'US 2Y T-Note',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '200000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0186564425,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'USB05Y_USD':   {'displayName': 'US 5Y T-Note',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '200000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0192317899,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'USB10Y_USD':   {'displayName': 'US 10Y T-Note',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '200000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.026807345,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'USB30Y_USD':   {'displayName': 'US T-Bond',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '200000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0453129168,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'USD_CAD':      {'displayName': 'USD\\/CAD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0002022283,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_CHF':      {'displayName': 'USD\\/CHF',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.000216464,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_CNH':      {'displayName': 'USD\\/CNH',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0008569587,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_CZK':      {'displayName': 'USD\\/CZK',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0154920828,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_DKK':      {'displayName': 'USD\\/DKK',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0016336714,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_HKD':      {'displayName': 'USD\\/HKD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0004516993,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_HUF':      {'displayName': 'USD\\/HUF',
                                'displayPrecision': 3,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.2823322926,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_INR':      {'displayName': 'USD\\/INR',
                                'displayPrecision': 3,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.1323272686,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_JPY':      {'displayName': 'USD\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0146406177,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_MXN':      {'displayName': 'USD\\/MXN',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0076374818,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_NOK':      {'displayName': 'USD\\/NOK',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0043528054,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_PLN':      {'displayName': 'USD\\/PLN',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0032002046,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_SAR':      {'displayName': 'USD\\/SAR',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0036734768,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_SEK':      {'displayName': 'USD\\/SEK',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0042889604,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_SGD':      {'displayName': 'USD\\/SGD',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0002639224,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_THB':      {'displayName': 'USD\\/THB',
                                'displayPrecision': 3,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.09544065,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_TRY':      {'displayName': 'USD\\/TRY',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '10000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0045976176,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'USD_ZAR':      {'displayName': 'USD\\/ZAR',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0122022564,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'},
                'WHEAT_USD':    {'displayName': 'Wheat',
                                'displayPrecision': 3,
                                'marginRate': '0.033333',
                                'maximumOrderUnits': '1000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0105155402,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'WTICO_USD':    {'displayName': 'West Texas Oil',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.0357413698,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'XAG_AUD':      {'displayName': 'Silver\\/AUD',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0281336856,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAG_CAD':      {'displayName': 'Silver\\/CAD',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0267897174,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAG_CHF':      {'displayName': 'Silver\\/CHF',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.02102323,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAG_EUR':      {'displayName': 'Silver\\/EUR',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0167877618,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAG_GBP':      {'displayName': 'Silver\\/GBP',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0150395493,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAG_HKD':      {'displayName': 'Silver\\/HKD',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.1519568867,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAG_JPY':      {'displayName': 'Silver\\/JPY',
                                'displayPrecision': 1,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '10000.0',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '5.0',
                                'pipLocation': 0,
                                'spread': 2.2708810111,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAG_NZD':      {'displayName': 'Silver\\/NZD',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0314819557,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAG_SGD':      {'displayName': 'Silver\\/SGD',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.028431454,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAG_USD':      {'displayName': 'Silver',
                                'displayPrecision': 5,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.0185492042,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_AUD':      {'displayName': 'Gold\\/AUD',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.7539248474,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_CAD':      {'displayName': 'Gold\\/CAD',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.6750384639,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_CHF':      {'displayName': 'Gold\\/CHF',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.5667068621,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_EUR':      {'displayName': 'Gold\\/EUR',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.3966794577,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_GBP':      {'displayName': 'Gold\\/GBP',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.374221502,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_HKD':      {'displayName': 'Gold\\/HKD',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 3.1884307164,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_JPY':      {'displayName': 'Gold\\/JPY',
                                'displayPrecision': 0,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '50',
                                'pipLocation': 1,
                                'spread': 54.5982756431,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_NZD':      {'displayName': 'Gold\\/NZD',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.9131474963,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_SGD':      {'displayName': 'Gold\\/SGD',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.7603977515,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_USD':      {'displayName': 'Gold',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '20000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.3323666566,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XAU_XAG':      {'displayName': 'Gold\\/Silver',
                                'displayPrecision': 3,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '10000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 0.1204519834,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XCU_USD':      {'displayName': 'Copper',
                                'displayPrecision': 5,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '1500000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '1.00000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.00050',
                                'pipLocation': -4,
                                'spread': 0.001556463,
                                'tradeUnitsPrecision': 0,
                                'type': 'CFD'},
                'XPD_USD':      {'displayName': 'Palladium',
                                'displayPrecision': 3,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '5000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 3.718161944,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'XPT_USD':      {'displayName': 'Platinum',
                                'displayPrecision': 3,
                                'marginRate': '0.05',
                                'maximumOrderUnits': '5000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.050',
                                'pipLocation': -2,
                                'spread': 2.7201599853,
                                'tradeUnitsPrecision': 0,
                                'type': 'METAL'},
                'ZAR_JPY':      {'displayName': 'ZAR\\/JPY',
                                'displayPrecision': 3,
                                'marginRate': '0.02',
                                'maximumOrderUnits': '100000000',
                                'maximumPositionSize': '0',
                                'maximumTrailingStopDistance': '100.000',
                                'minimumTradeSize': '1',
                                'minimumTrailingStopDistance': '0.005',
                                'pipLocation': -2,
                                'spread': 0.015065325,
                                'tradeUnitsPrecision': 0,
                                'type': 'CURRENCY'}}

_SPREAD_1 = {'AU200_AUD': 2.7524891777922527,
 'AUD_CAD': 2.575894299902313,
 'AUD_CHF': 3.174924566916316,
 'AUD_HKD': 15.324296190166033,
 'AUD_JPY': 1.9264265206773168,
 'AUD_NZD': 3.6268264490393913,
 'AUD_SGD': 4.062930776619988,
 'AUD_USD': 1.5085281992836188,
 'BCO_USD': 4.042400143275811,
 'CAD_CHF': 2.931846476717674,
 'CAD_HKD': 13.170464882774338,
 'CAD_JPY': 2.2604098436991156,
 'CAD_SGD': 3.729379158254642,
 'CHF_HKD': 22.518349739498536,
 'CHF_JPY': 3.1624961103874965,
 'CHF_ZAR': 152.78501675350054,
 'CN50_USD': 13.324633783783797,
 'CORN_USD': 1.033831859329206,
 'DE10YB_EUR': 1.5654509964180914,
 'DE30_EUR': 2.2872269912080547,
 'EU50_EUR': 1.5623899592966417,
 'EUR_AUD': 3.1499197639205474,
 'EUR_CAD': 2.8536441810485034,
 'EUR_CHF': 2.534711336698151,
 'EUR_CZK': 187.55592365678865,
 'EUR_DKK': 14.228758498860229,
 'EUR_GBP': 1.8226575252360868,
 'EUR_HKD': 16.6595337512211,
 'EUR_HUF': 29.34920255617058,
 'EUR_JPY': 2.0551343357212652,
 'EUR_NOK': 45.03704055682182,
 'EUR_NZD': 4.329758650276773,
 'EUR_PLN': 34.91158062520345,
 'EUR_SEK': 45.79999210354918,
 'EUR_SGD': 5.123162896450659,
 'EUR_TRY': 60.37278383262796,
 'EUR_USD': 1.4230449071963496,
 'EUR_ZAR': 164.63983721914636,
 'FR40_EUR': 1.3249353126017709,
 'GBP_AUD': 4.229202066102256,
 'GBP_CAD': 4.191403796808841,
 'GBP_CHF': 3.7521268267665313,
 'GBP_HKD': 22.95050776619995,
 'GBP_JPY': 3.0183455063497093,
 'GBP_NZD': 5.916066097362412,
 'GBP_PLN': 49.91871549983721,
 'GBP_SGD': 6.506035875936164,
 'GBP_USD': 2.1265020384239652,
 'GBP_ZAR': 194.11599576685103,
 'HK33_HKD': 6.696452948550763,
 'HKD_JPY': 26.626497492673447,
 'IN50_USD': 7.9312693406057,
 'JP225_USD': 11.637356154347112,
 'NAS100_USD': 1.7625025294692194,
 'NATGAS_USD': 0.7308377316834849,
 'NL25_EUR': 22.193682237056148,
 'NZD_CAD': 3.1588926603712064,
 'NZD_CHF': 3.4214516753500495,
 'NZD_HKD': 17.96694540866169,
 'NZD_JPY': 2.4507396173884657,
 'NZD_SGD': 4.412654327580604,
 'NZD_USD': 1.874763935200257,
 'SG30_SGD': 2.6120415809182553,
 'SGD_CHF': 3.1512878622598612,
 'SGD_HKD': 15.246195555193784,
 'SGD_JPY': 2.7813282383588422,
 'SOYBN_USD': 1.750556237381946,
 'SPX500_USD': 0.5069296740475394,
 'SUGAR_USD': 2.591484550635075,
 'TRY_JPY': 3.452231162487795,
 'TWIX_USD': 0.5228082759687384,
 'UK100_GBP': 2.15749760989903,
 'UK10YB_GBP': 4.03767167209377,
 'US2000_USD': 60.954259833930614,
 'US30_USD': 3.2595113171605226,
 'USB02Y_USD': 1.8656442543144747,
 'USB05Y_USD': 1.923178992184938,
 'USB10Y_USD': 2.6807344969067253,
 'USB30Y_USD': 4.531291680234347,
 'USD_CAD': 2.0222826652556174,
 'USD_CHF': 2.1646399820905247,
 'USD_CNH': 8.569587044936485,
 'USD_CZK': 154.92082837837836,
 'USD_DKK': 16.336714067079118,
 'USD_HKD': 4.516992761315538,
 'USD_HUF': 28.233229257570915,
 'USD_INR': 13.232726860446173,
 'USD_JPY': 1.4640617665255586,
 'USD_MXN': 76.37481823510241,
 'USD_NOK': 43.52805407033534,
 'USD_PLN': 32.00204604363392,
 'USD_SAR': 36.73476792575772,
 'USD_SEK': 42.889604200586206,
 'USD_SGD': 2.6392236567893126,
 'USD_THB': 9.544064995115619,
 'USD_TRY': 45.97617557798754,
 'USD_ZAR': 122.022564132205,
 'WHEAT_USD': 1.051554024747648,
 'WTICO_USD': 3.574136978182986,
 'XAG_AUD': 281.33685574731305,
 'XAG_CAD': 267.8971742103539,
 'XAG_CHF': 210.23229957668474,
 'XAG_EUR': 167.87761755128497,
 'XAG_GBP': 150.39549251058293,
 'XAG_HKD': 1519.5688668186235,
 'XAG_JPY': 2.270881011071313,
 'XAG_NZD': 314.81955698469517,
 'XAG_SGD': 284.3145402149149,
 'XAG_USD': 185.49204200586192,
 'XAU_AUD': 75.39248474438297,
 'XAU_CAD': 67.50384638554216,
 'XAU_CHF': 56.670686209703526,
 'XAU_EUR': 39.6679457668512,
 'XAU_GBP': 37.422150195376055,
 'XAU_HKD': 318.84307163790385,
 'XAU_JPY': 5.459827564311296,
 'XAU_NZD': 91.31474962552971,
 'XAU_SGD': 76.03977515467274,
 'XAU_USD': 33.236665662650445,
 'XAU_XAG': 12.045198344187572,
 'XCU_USD': 15.564629518072334,
 'XPD_USD': 371.8161943992191,
 'XPT_USD': 272.0159985346781,
 'ZAR_JPY': 1.5065324975578016}
#计算保证金率的时候，可以读取这个字典；如果是commidity,保证金率是2%；
#如果是cfd，保证金率是两档，一个5%，一个20%，5%适用于经济发达国家的指数，20%适用于不发达地区指数，商品指数、债券指数；
_MARGIN_RATE_={'AUD_CAD': '3.0%',
 'AUD_CHF': '5.0%',
 'AUD_HKD': '5.0%',
 'AUD_JPY': '2.0%',
 'AUD_NZD': '3.0%',
 'AUD_SGD': '5.0%',
 'AUD_USD': '3.0%',
 'CAD_CHF': '5.0%',
 'CAD_HKD': '5.0%',
 'CAD_JPY': '4.0%',
 'CAD_SGD': '5.0%',
 'CHF_HKD': '5.0%',
 'CHF_JPY': '5.0%',
 'CHF_ZAR': '5.0%',
 'EUR_AUD': '3.0%',
 'EUR_CAD': '2.0%',
 'EUR_CHF': '5.0%',
 'EUR_CZK': '5.0%',
 'EUR_DKK': '2.0%',
 'EUR_GBP': '2.0%',
 'EUR_HKD': '5.0%',
 'EUR_HUF': '5.0%',
 'EUR_JPY': '2.0%',
 'EUR_NOK': '3.0%',
 'EUR_NZD': '3.0%',
 'EUR_PLN': '5.0%',
 'EUR_SEK': '3.0%',
 'EUR_SGD': '5.0%',
 'EUR_TRY': '5.0%',
 'EUR_USD': '2.0%',
 'EUR_ZAR': '5.0%',
 'GBP_AUD': '3.0%',
 'GBP_CAD': '2.0%',
 'GBP_CHF': '5.0%',
 'GBP_HKD': '5.0%',
 'GBP_JPY': '2.0%',
 'GBP_NZD': '3.0%',
 'GBP_PLN': '5.0%',
 'GBP_SGD': '5.0%',
 'GBP_USD': '2.0%',
 'GBP_ZAR': '5.0%',
 'HKD_JPY': '5.0%',
 'NZD_CAD': '3.0%',
 'NZD_CHF': '5.0%',
 'NZD_HKD': '5.0%',
 'NZD_JPY': '4.0%',
 'NZD_SGD': '5.0%',
 'NZD_USD': '2.0%',
 'SGD_CHF': '5.0%',
 'SGD_HKD': '5.0%',
 'SGD_JPY': '5.0%',
 'TRY_JPY': '5.0%',
 'USD_CAD': '2.0%',
 'USD_CHF': '5.0%',
 'USD_CNH': '5.0%',
 'USD_CZK': '5.0%',
 'USD_DKK': '2.0%',
 'USD_HKD': '5.0%',
 'USD_HUF': '5.0%',
 'USD_INR': '5.0%',
 'USD_JPY': '2.0%',
 'USD_MXN': '8.0%',
 'USD_NOK': '3.0%',
 'USD_PLN': '5.0%',
 'USD_SAR': '5.0%',
 'USD_SEK': '3.0%',
 'USD_SGD': '2.0%',
 'USD_THB': '5.0%',
 'USD_TRY': '5.0%',
 'USD_ZAR': '5.0%',
 'ZAR_JPY': '5.0%',
 'XAU_USD': '2.0%',
 'XAU_AUD': '2.0%',
 'XAU_CAD': '2.0%',
 'XAU_CHF': '2.0%',
 'XAU_EUR': '2.0%',
 'XAU_GBP': '2.0%',
 'XAU_HKD': '2.0%',
 'XAU_JPY': '2.0%',
 'XAU_NZD': '2.0%',
 'XAU_SGD': '2.0%',
 'XAU_XAG': '2.0%',
 'XPD_USD': '2.0%',
 'XPT_USD': '2.0%',
 'XAG_USD': '2.0%',
 'XAG_AUD': '2.0%',
 'XAG_CAD': '2.0%',
 'XAG_CHF': '2.0%',
 'XAG_EUR': '2.0%',
 'XAG_GBP': '2.0%',
 'XAG_HKD': '2.0%',
 'XAG_JPY': '2.0%',
 'XAG_NZD': '2.0%',
 'XAG_SGD': '2.0%',
 'AU200_AUD': '5.0%',
 'BCO_USD': '20.0%',
 'DE10YB_EUR': '20.0%',# 需要核对这个是否准确，是否等于bund #
 'CN50_USD': '20.0%',
 'XCU_USD': '20.0%',
 'CORN_USD': '20.0%',
 'EU50_EUR': '5.0%',
 'FR40_EUR': '5.0%',
 'DE30_EUR': '5.0%',
 'HK33_HKD': '5.0%',
 'IN50_USD': '20.0%',
 'JP225_USD': '5.0%',
 'NATGAS_USD': '20.0%',
 'NL25_EUR': '20.0%',
 'SG30_SGD': '5.0%',
 'SOYBN_USD': '20.0%',
 'SUGAR_USD': '20.0%',
 'TWIX_USD': '20.0%',
 'UK100_GBP': '5.0%',
 'UK10YB_GBP': '20.0%',
 'USB10Y_USD': '20.0%',
 'USB02Y_USD': '20.0%',
 'USB05Y_USD': '20.0%',
 'NAS100_USD': '5.0%',
 'US2000_USD': '5.0%',
 'SPX500_USD': '5.0%',
 'USB30Y_USD': '20.0%',
 'US30_USD': '5.0%',
 'WTICO_USD': '20.0%',
 'WHEAT_USD': '20.0%'}

 # ZERO_spread

_ZERO_SPREAD_ = {'AU200_AUD': 0,
 'AUD_CAD': 0,
 'AUD_CHF': 0,
 'AUD_HKD': 0,
 'AUD_JPY': 0,
 'AUD_NZD': 0,
 'AUD_SGD': 0,
 'AUD_USD': 0,
 'BCO_USD': 0,
 'CAD_CHF': 0,
 'CAD_HKD': 0,
 'CAD_JPY': 0,
 'CAD_SGD': 0,
 'CHF_HKD': 0,
 'CHF_JPY': 0,
 'CHF_ZAR': 0,
 'CN50_USD': 0,
 'CORN_USD': 0,
 'DE10YB_EUR': 0,
 'DE30_EUR': 0,
 'EU50_EUR': 0,
 'EUR_AUD': 0,
 'EUR_CAD': 0,
 'EUR_CHF': 0,
 'EUR_CZK': 0,
 'EUR_DKK': 0,
 'EUR_GBP': 0,
 'EUR_HKD': 0,
 'EUR_HUF': 0,
 'EUR_JPY': 0,
 'EUR_NOK': 0,
 'EUR_NZD': 0,
 'EUR_PLN': 0,
 'EUR_SEK': 0,
 'EUR_SGD': 0,
 'EUR_TRY': 0,
 'EUR_USD': 0,
 'EUR_ZAR': 0,
 'FR40_EUR': 0,
 'GBP_AUD': 0,
 'GBP_CAD': 0,
 'GBP_CHF': 0,
 'GBP_HKD': 0,
 'GBP_JPY': 0,
 'GBP_NZD': 0,
 'GBP_PLN': 0,
 'GBP_SGD': 0,
 'GBP_USD': 0,
 'GBP_ZAR': 0,
 'HK33_HKD': 0,
 'HKD_JPY': 0,
 'IN50_USD': 0,
 'JP225_USD': 0,
 'NAS100_USD': 0,
 'NATGAS_USD': 0,
 'NL25_EUR': 0,
 'NZD_CAD': 0,
 'NZD_CHF': 0,
 'NZD_HKD': 0,
 'NZD_JPY': 0,
 'NZD_SGD': 0,
 'NZD_USD': 0,
 'SG30_SGD': 0,
 'SGD_CHF': 0,
 'SGD_HKD': 0,
 'SGD_JPY': 0,
 'SOYBN_USD': 0,
 'SPX500_USD': 0,
 'SUGAR_USD': 0,
 'TRY_JPY': 0,
 'TWIX_USD': 0,
 'UK100_GBP': 0,
 'UK10YB_GBP': 0,
 'US2000_USD': 0,
 'US30_USD': 0,
 'USB02Y_USD': 0,
 'USB05Y_USD': 0,
 'USB10Y_USD': 0,
 'USB30Y_USD': 0,
 'USD_CAD': 0,
 'USD_CHF': 0,
 'USD_CNH': 0,
 'USD_CZK': 0,
 'USD_DKK': 0,
 'USD_HKD': 0,
 'USD_HUF': 0,
 'USD_INR': 0,
 'USD_JPY': 0,
 'USD_MXN': 0,
 'USD_NOK': 0,
 'USD_PLN': 0,
 'USD_SAR': 0,
 'USD_SEK': 0,
 'USD_SGD': 0,
 'USD_THB': 0,
 'USD_TRY': 0,
 'USD_ZAR': 0,
 'WHEAT_USD': 0,
 'WTICO_USD': 0,
 'XAG_AUD': 0,
 'XAG_CAD': 0,
 'XAG_CHF': 0,
 'XAG_EUR': 0,
 'XAG_GBP': 0,
 'XAG_HKD': 0,
 'XAG_JPY': 0,
 'XAG_NZD': 0,
 'XAG_SGD': 0,
 'XAG_USD': 0,
 'XAU_AUD': 0,
 'XAU_CAD': 0,
 'XAU_CHF': 0,
 'XAU_EUR': 0,
 'XAU_GBP': 0,
 'XAU_HKD': 0,
 'XAU_JPY': 0,
 'XAU_NZD': 0,
 'XAU_SGD': 0,
 'XAU_USD': 0,
 'XAU_XAG': 0,
 'XCU_USD': 0,
 'XPD_USD': 0,
 'XPT_USD': 0,
 'ZAR_JPY': 0}
_PIP_POINT_ = {'AU200_AUD': 1,
'AUD_CAD': 5,
'AUD_CHF': 5,
'AUD_HKD': 5,
'AUD_JPY': 3,
'AUD_NZD': 5,
'AUD_SGD': 5,
'AUD_USD': 5,
'BCO_USD': 3,
'CAD_CHF': 5,
'CAD_HKD': 5,
'CAD_JPY': 3,
'CAD_SGD': 5,
'CHF_HKD': 5,
'CHF_JPY': 3,
'CHF_ZAR': 5,
'CN50_USD': 1,
'CORN_USD': 3,
'DE10YB_EUR': 3,
'DE30_EUR': 1,
'EU50_EUR': 1,
'EUR_AUD': 5,
'EUR_CAD': 5,
'EUR_CHF': 5,
'EUR_CZK': 5,
'EUR_DKK': 5,
'EUR_GBP': 5,
'EUR_HKD': 5,
'EUR_HUF': 3,
'EUR_JPY': 3,
'EUR_NOK': 5,
'EUR_NZD': 5,
'EUR_PLN': 5,
'EUR_SEK': 5,
'EUR_SGD': 5,
'EUR_TRY': 5,
'EUR_USD': 5,
'EUR_ZAR': 5,
'FR40_EUR': 1,
'GBP_AUD': 5,
'GBP_CAD': 5,
'GBP_CHF': 5,
'GBP_HKD': 5,
'GBP_JPY': 3,
'GBP_NZD': 5,
'GBP_PLN': 5,
'GBP_SGD': 5,
'GBP_USD': 5,
'GBP_ZAR': 5,
'HK33_HKD': 1,
'HKD_JPY': 5,
'IN50_USD': 1,
'JP225_USD': 1,
'NAS100_USD': 1,
'NATGAS_USD': 3,
'NL25_EUR': 3,
'NZD_CAD': 5,
'NZD_CHF': 5,
'NZD_HKD': 5,
'NZD_JPY': 3,
'NZD_SGD': 5,
'NZD_USD': 5,
'SG30_SGD': 2,
'SGD_CHF': 5,
'SGD_HKD': 5,
'SGD_JPY': 3,
'SOYBN_USD': 3,
'SPX500_USD': 1,
'SUGAR_USD': 5,
'TRY_JPY': 3,
'TWIX_USD': 1,
'UK100_GBP': 1,
'UK10YB_GBP': 3,
'US2000_USD': 3,
'US30_USD': 1,
'USB02Y_USD': 3,
'USB05Y_USD': 3,
'USB10Y_USD': 3,
'USB30Y_USD': 3,
'USD_CAD': 5,
'USD_CHF': 5,
'USD_CNH': 5,
'USD_CZK': 5,
'USD_DKK': 5,
'USD_HKD': 5,
'USD_HUF': 3,
'USD_INR': 3,
'USD_JPY': 3,
'USD_MXN': 5,
'USD_NOK': 5,
'USD_PLN': 5,
'USD_SAR': 5,
'USD_SEK': 5,
'USD_SGD': 5,
'USD_THB': 3,
'USD_TRY': 5,
'USD_ZAR': 5,
'WHEAT_USD': 3,
'WTICO_USD': 3,
'XAG_AUD': 5,
'XAG_CAD': 5,
'XAG_CHF': 5,
'XAG_EUR': 5,
'XAG_GBP': 5,
'XAG_HKD': 5,
'XAG_JPY': 1,
'XAG_NZD': 5,
'XAG_SGD': 5,
'XAG_USD': 5,
'XAU_AUD': 3,
'XAU_CAD': 3,
'XAU_CHF': 3,
'XAU_EUR': 3,
'XAU_GBP': 3,
'XAU_HKD': 3,
'XAU_JPY':0,
'XAU_NZD': 3,
'XAU_SGD': 3,
'XAU_USD': 3,
'XAU_XAG': 3,
'XCU_USD': 5,
'XPD_USD': 3,
'XPT_USD': 3,
'ZAR_JPY': 3}


_SPREAD_ = {k:v*0.1**(_PIP_POINT_[k]-1) for k,v in _SPREAD_1.items()}
#_SPREAD_ = {k:round(v*0.01, 4) if 'JPY' in k else round(v*0.0001, 6) for k,v in _SPREAD_.items()}